Date : 15 juin 1991
Protection : DISQUETTE CLEF et DECREMENTATION
Programme : LEMMINGS
Outils : SOFT-ICE
Fichier : RUSSEL.DAT
Temps pass� : 15 MINUTES
Soci�t� : PSYGNOSIS
Divers : Cr�ation du fichier LEM.EXE
Origine : MICHOU
Num�ro : 090
Une protection disquette classique ( disquette que je n'ai d'ailleurs
pas pu copier ni avec COPY BOARD ni avec le dernier cri des copieurs
COPYWRITE et COPY2PC, m�me en changeant de machine, de lecteur, etc...)
Heureusement le soft une fois install� sur disque dur va lire la
disquette clef puis cr�er un fichier cach� intitul� RUSSEL.DAT de 256
octets. Apr�s cel� le soft fonctionne sans acc�s � la disquette clef.
L'histoire aurait pu s'arr�ter l� ( et la protection n'aurait pas �t�
� la hauteur du renom de la soci�t� ) si ce fameux fichier ne
permettait de lancer le jeu qu'une dizaine de fois !.
Bien jou�. Mais pas tr�s efficace puisqu'il suffit de comparer le
fichier qui ne permet plus de jouer � un de ces pr�decesseur.
Et en fait, avec un oeil exerc� on remarque que la premi�re fois que
le fichier est cr�e son premier octet est �gal � zero. Et qu'il
s'incr�mente � chaque utilisation du jeu jusqu'� atteindre 9.
Au del� le soft redemande la disquette clef.
Une "foultitude" de solutions existe � ce type de protection, la plus
simple et la plus rapide est de renomer le fichier d'origine ( sagement
sauver lors de l'installation sous un autre nom ) en �crasant celui qui
ne veut plus se charger. Mais c'est un READ ONLY et HIDDEN, alors
comme tout le monde ne poss�de pas NORTON COMMANDER ou PCTOOLS j'ai
simplement �crit un minuscule programme en C pour que cet octet soit
toujours �gal � z�ro.
Note: En passant le fichier VGALEMI.EXE � SOFT-ICE on trouve bien
l'endroit ou le soft ouvre le fichier RUSSELL.DAT par une INT 21
AH = 3D et lit la premi�re position qu'il incr�mente.
Cette chaine est cod�e sinon il eut �t� facile d'emp�cher l'incr�menta-
tion. En fait tout le fichier est cod� non pas par LZEXE ou EXEPACK
mais par PKLITE ( petit dernier ). PKLITE poss�de bien une option
de d�compactage: PKLITE -X VGALEMI.EXE mais ce dernier donne le
message: EXPANSION DE FICHIER IMPOSSIBLE ! Alors qu'il ne le donne
pas sur d'autre fichier. Il le donne �galement sur lui-m�me ce qui
me laisse penser qu'il doit exister dans la doc ou dans une version
plus r�cente une possibilit� d'emp�cher le retour � l'original.
Je poss�de une version b�ta de PKLITE, ceci expliquerait peut-�tre
cel�. A voir ult�rieurement...
#include
#include
#include
char inpf[]={"russell.dat"};
void main()
{
int fh,wrt;
printf("FREDDY_SOFT V1.01 15 juin 1991.\n");
printf("Lemmings infinite hard disk player.\n");
chmod(inpf,S_IREAD|S_IWRITE); /* on modifie l'attribut en WRITE */
if((fh=open(inpf,O_BINARY|O_RDWR))==-1)
{
printf("Fichier %s inexistant ou erreur d'ouverture.\n",inpf);
exit(0);
}
if((wrt=write(fh,0,1))==-1)
{
printf("erreur d'�criture\n");
exit(0);
}
printf("Everythings is OK thanks to ETOYOC\n");
getch();
close( fh );
}
FREDDY
|